package ar.com.vates.herencia;

import com.google.common.base.Preconditions;

public class Ejercicio1 {

	static CuentaCorriente cuenta1;
	static CuentaCorriente cuenta2;

	static CuentaAhorro cuenta3;
	static CuentaAhorro cuenta4;
	static CuentaAhorro cuenta5;

	public static void main(String[] args) {

		// Titulares
		Titular titular1 = new Titular("Roberto", "Lopez", 33);
		Titular titular2 = new Titular("Leandro", "Sanchez", 56);
		Titular titular3 = new Titular("Carlos", "Gomez", 66);
		Titular titular4 = new Titular("Ernesto", "Perez", 47);
		Titular titular5 = new Titular("Angel", "Garcia", 58);

		// Cuentas corrientes
		cuenta1 = new CuentaCorriente(titular1, "001");
		cuenta2 = new CuentaCorriente(titular2, "002", 2500);

		// Cuentas ahorro
		cuenta3 = new CuentaAhorro(titular3, "003");
		cuenta4 = new CuentaAhorro(titular4, "004", 1.0);
		cuenta5 = new CuentaAhorro(titular5, "001", 1500, 0.5);

		mostrarDatosCuentas(); // muestro los datos de todas las cuentas

		// Algunas aplicaciones de los metodos

		System.out.println("\nComparacion de cuenta1 con las otras cuentas");
		System.out.println(compararCuentas(cuenta1, cuenta2));
		System.out.println(compararCuentas(cuenta1, cuenta3));
		System.out.println(compararCuentas(cuenta1, cuenta4));
		System.out.println(compararCuentas(cuenta1, cuenta5));

		System.out.println("\n==========DEPOSITOS==========");

		cuenta1.depositar(60000);
		cuenta2.depositar(500.1);
		cuenta3.depositar(150900.25);
		cuenta4.depositar(4065.5);

		mostrarDatosCuentas(); // muestro los datos nuevos para poder ver los
								// cambios

		System.out.println("\n========EXTRACCIONES========");

		cuenta1.extraer(59999);
		cuenta2.extraer(250);
		cuenta3.extraer(150000);
		cuenta4.extraer(65.5);
		cuenta5.extraer(1500);

		mostrarDatosCuentas();

		System.out.println("\n=========INTERESES=========");

		cuenta3.calcularInteres();
		cuenta4.calcularInteres();
		cuenta5.calcularInteres();

		mostrarDatosCuentas();

	}

	public static String compararCuentas(CuentaCorriente c1, CuentaCorriente c2) {

		Preconditions.checkNotNull(c1);
		Preconditions.checkNotNull(c2);

		if (c1.equals(c2))
			return "Las cuentas son iguales";
		else
			return "Las cuentas son distintas";
	}

	public static void mostrarDatosCuentas() {
		System.out.println(cuenta1.toString());
		System.out.println(cuenta2.toString());
		System.out.println(cuenta3.toString());
		System.out.println(cuenta4.toString());
		System.out.println(cuenta5.toString());
	}

}
